#include <iostream>
#include <string>
using namespace std;

/*class test
{
public:
	test()
	{
		a = 0;
		b = 0;
	}

	test(int n1)
	{
		a = n1;
		b = 0;
	}

	test(int n1, int n2)
	{
		a = n1;
		b = n2;
	}


	test(int n1 =0, int n2 =0)
	{
		a = n1;
		b = n2;
	}
public:
	int a;
	int b;
};

int main()
{
	test a;

	cout << "a.a : " << a.a << "a.b : " << a.b << endl;

	test b(5);
	cout << "b.a : " << b.a << "b.b : " << b.b << endl;

	test c(3,4);

	cout << "c.a : " << c.a << "c.b : " << c.b << endl;

	test d(a);

	cout << "d.a : " << d.a << "d.b : " << d.b << endl;
	return 0;
}


class func
{
public:
	func(string a)
	{
		cout << "func()" << a << endl;
	}
	~func()
	{
		cout << "~func()" << endl;
	}
};

class test : public func
{
public:
	test() : func("constructor")
	{
		cout << "test()" << endl;
	}
	~test()
	{
		cout << "~test()" << endl;
	}
};

int main()
{
	test a;
	return 0;
}

*/
class func
{
public:
	func() {}
	~func() {}
public:
	int x;
};

class func1 : public virtual func
{
public:
	func1() {}
	~func1() {}
public:
	void func()
	{
		//cout << "func() in func1" << x << endl;
	}
};

class func2
{
public:
	func2() {}
	~func2() {}
public:
	void func()
	{
		cout << "func() in func2" << x << endl;
	}
};

class test : public func1, public func2
{
public:
	test() {}
	~test(){}
public:
	void func()
	{
		cout << "func() in test" << x << endl;
	}
};

int main()

{
	test a;
	a.func1::func();
	a.func2::func();
	return 0;
}